//浅拷贝 shallow copy
//代码问题：没有析构函数，将导致内存泄漏；
//类的某属性是指针（动态存储），同类对象之间相互赋值，将会产生浅拷贝（也叫指针悬停），即：没有改变指针所指向的内存单元中存储的值，只是改变了指针所指向的单元。
#include <iostream>
using namespace std;
class SHcopySample
{
public:
    SHcopySample():m_ptr(NULL)
    {
    }
    SHcopySample(int i)
    {
        m_ptr=new int(i);
    }
    int getValue() const
    {
        return *m_ptr;
    }
    void setValue(int i)
    {
        *m_ptr=i;
    }
private:
    int *m_ptr;
};
int main()
{
    SHcopySample obj1(5);
    SHcopySample obj2(obj1); 		//定义对象obj2，并调用默认的拷贝构造函数对obj2初始化
    SHcopySample obj3;
    obj3=obj1;			//调用默认的赋值运算函数对obj3赋值
    cout<< "Before obj1="<<obj1.getValue()<<endl;
    cout<< "Before obj2="<<obj2.getValue()<<endl;
    cout<< "Before obj3="<<obj3.getValue()<<endl;
    obj1.setValue(13);
    cout<< "After obj1="<<obj1.getValue()<<endl;
    cout<< "After obj2="<<obj2.getValue()<<endl;
    cout<< "After obj3="<<obj3.getValue()<<endl;
    return 0;
}